package com.hns.tool.pub;

import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

/**
 * 获取配置项信息
 * @author:Fisher
 * @email:zhuangcaijin@126.com
 * @version Revision 2.0.0
 */
public class UtilConfig {
	
	/**
	 * 配置对象
	 */
	static final Properties prop;
	/**
	 * 目录
	 */
	static String workdir = System.getProperty("user.dir");
	
	static {
		String PROPERTIES_FILE_SYSTEM_VAR = "can.properties";
		String propertiesFile = System.getProperty(PROPERTIES_FILE_SYSTEM_VAR);
		if ( propertiesFile == null ) {
			propertiesFile = "/can.properties";
		}
		System.out.println("work dir : " + workdir);
		prop = loadFile(propertiesFile);
	}
	
	/**
	 * 读取配置文件
	 * @param propertiesFile 配置文件名
	 * @return 配置文件对象
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static Properties loadFile(String propertiesFile) {
		Properties proper = new Properties();
		try {
			File f = new File(workdir + propertiesFile);
			if ( f.exists() && f.isFile() ) {
				// 优先读取工作目录下的配置文件
				proper.load(new FileInputStream(f));
			} else {
				proper.load(UtilConfig.class.getResourceAsStream(propertiesFile));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return proper;
	}

	/**
	 * 得到属性值,转成整形
	 * @param key 属性名
	 * @return 整形值
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static int getInt(String key) {
		return getInt(key, 100);
	}
	
	/**
	 * 得到属性值,转成整形
	 * @param key 属性名
	 * @param defaultValue 默认值
	 * @return 整形值
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static int getInt(String key, int defaultValue) {
		try {
			return  Integer.parseInt(prop.getProperty(key, String.valueOf(defaultValue)));
		} catch (Exception e) {
			return defaultValue;
		}
	}
	
	/**
	 * 得到属性值
	 * @param key 属性名
	 * @param defaultValue 默认值
	 * @return 属性值
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static String getString(String key, String defaultValue) {
		return prop.getProperty(key, defaultValue);
	}
	
	/**
	 * 得到属性值
	 * @param key 属性名
	 * @return 属性值
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static String getString(String key) {
		return prop.getProperty(key);
	}
	
	/**
	 * 得到配置文件指定属性值并转为长整型
	 * @param key 属性名
	 * @return 长整形值
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static long getLong(String key) {
		return getLong(key, 1000L);
	}
	
	/**
	 * 得到配置文件指定属性值并转为长整型
	 * @param key 属性名
	 * @param defaultValue 默认值
	 * @return 长整形值
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static long getLong(String key, long defaultValue) {
		try {
			return  Long.parseLong(prop.getProperty(key, String.valueOf(defaultValue)));
		} catch (Exception e) {
			return defaultValue;
		}
	}
}
